iT邦幫忙

2022 iThome 鐵人賽

DAY 26
0

目的

在windows系統上想執行排程有兩個選擇

  1. 使用windows工作排程器執行exe檔
  2. 透過Hangfire進行排程管理

同步更新於個人部落格
Hangfire範例

此次教學說明如何使用Hangfire執行排程

1.建立新專案

選擇ASP.NET Core Web API專案範本,並執行下一步
步驟1

2.設定新的專案

命名你的專案名稱,並選擇專案要存放的位置。
範例2-1

3.其他資訊

直接進行下一步
步驟3

4.NuGet加入套件

  • Hangfire
  • Hangfire.InMemory

範例4-1

5.編輯Program.cs檔

using Hangfire;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
//註冊hangfire並且使用記憶體保存排程,
//預設所下載的HangFire套件可以使用sqlserver,可透過config.UseSqlServerStorage();,但需要設定
builder.Services.AddHangfire(config => {
  config.UseInMemoryStorage();
});
//註冊hangfire要使用的伺服器,伺服器就是上面所寫的使用記憶體當伺服器
builder.Services.AddHangfireServer();
var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment()) {
  app.UseSwagger();
  app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();
//使用hangfire內建的儀表板
app.UseHangfireDashboard();
app.MapControllers();

app.Run();

範例5-1

6.編輯WeatherForecastController.cs類別檔

    //記得using Hangfire;
    [HttpGet(Name = "GetWeatherForecast")]
    public IEnumerable<WeatherForecast> Get() {
      //單次立即執行
      BackgroundJob.Enqueue(() => Console.WriteLine("單次!"));
      //單次10秒後執行
      BackgroundJob.Schedule(() => Console.WriteLine("10秒後執行!"), TimeSpan.FromSeconds(10));
      //重複執行,預設為每天00:00啟動
      RecurringJob.AddOrUpdate(() => Console.WriteLine("重複執行!"), Cron.Daily);
      return Enumerable.Range(1, 5).Select(index => new WeatherForecast {
        Date = DateTime.Now.AddDays(index),
        TemperatureC = Random.Shared.Next(-20, 55),
        Summary = Summaries[Random.Shared.Next(Summaries.Length)]
      })
      .ToArray();
    }

範例6-1

7.執行結果

F5執行後,依照下列步驟操作,並確認結果
範例7-1
範例7-2
接下來到hangfire儀表板查看執行狀態

預設的網址為https://domain/hangfire
我的swagger網址為
https://localhost:7198/swagger/index.html
所以下方為hangfire預設路徑
https://localhost:7198/hangfire

就可以看到Hangfire的畫面了,接著點擊上方工作就可以看到所執行的排程,如需看重複作業則點選定期工作
範例7-3
範例7-4
範例7-5

參考

Hangfire官網

範例檔

GitHub


上一篇
[.net 6] NLog進階範例
下一篇
[.net 6] xUnit範例
系列文
.net6套件入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言